Bug记录-【Java】 系统时间给程序命名重复

本文记录一个Java基础的Bug

由于需要写一个文件上传的接口,为了防止命名重复的问题,我想到了用系统当时的毫秒数的Long值来给文件命名。

Date d = new Date();

d.getTime();

因为是多文件上传,所以用到了for循环给文件进行命名。

Date d = new Date();

for(int i=0;i<9 ; i++)

​ d.getTime());

但后来却发现一个很严重的错误就是文件保存过后只有一个文件,我很奇怪,按道理,时间是每时每刻都不一样的但是为什么会导致文件名重复呢?

于是我打印出了所有命名发现在一个for循环下产生的文件的名字居然是一样的。于是想到,一般cpu执行速度都十分快在3Ghz左右,但是系统时间仅仅是毫秒级的,所以当在同一毫秒下系统执行了多条指令,所以输出了相同的文件名,正确的做法是可以在时间上加入当时的循环此时,这样就可以帮助不会再重复了。

-->